8573d80830babf10b811326fc184e69c3effeb5a,tests/frontend/org/voltdb/planner/TestMultipleOuterJoinPlans.java,TestMultipleOuterJoinPlans,testFullJoinExpressions,#,301

Before Change


        pn = compile("select * FROM  " +
                "R1 FULL JOIN R2 ON R1.A = R2.A AND R1.C = R2.C");
        n = pn.getChild(0).getChild(0);
        verifyJoinNode(n, PlanNodeType.NESTLOOP, JoinType.FULL, true, PlanNodeType.SEQSCAN, PlanNodeType.SEQSCAN);
        nlj = (NestLoopPlanNode) n;
        e = nlj.getJoinPredicate();
        assertNotNull(e);

After Change


        // OUTER JOIN expression (R1.A > 0) is pre-predicate, inner and inner - outer expressionsR3.C = R2.C AND R3.C < 0 are predicate
        pn = compile("select * FROM R1 JOIN R2 ON R1.A = R2.C FULL JOIN R3 ON R3.C = R2.C  AND R1.A > 0 AND R3.C < 0");
        n = pn.getChild(0).getChild(0);
        verifyJoinNode(n, PlanNodeType.NESTLOOP, JoinType.FULL, ExpressionType.COMPARE_GREATERTHAN, ExpressionType.CONJUNCTION_AND, null, PlanNodeType.NESTLOOP, PlanNodeType.SEQSCAN, null, "R3");
        n = n.getChild(0);
        verifyJoinNode(n, PlanNodeType.NESTLOOP, JoinType.INNER, null, ExpressionType.COMPARE_EQUAL, null, PlanNodeType.SEQSCAN, PlanNodeType.SEQSCAN, "R1", "R2");